# 美国国债年度利息-年收入（月度统计，假设国债利率3.0%）

from src.utils.akcache import Cache
import akshare as ak
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

ac = Cache()

# 读取国债数据到DataFrame
df_debt = pd.read_csv("data/origin/USA/DebtPenny_19930401_20250930.csv")
df_debt = df_debt[['日期', '国债总额']]
df_debt['日期'] = pd.to_datetime(df_debt['日期'])
df_debt = df_debt.set_index('日期')

# 读取税收数据到DataFrame
df_income = pd.read_csv("data/origin/USA/USGovtRevCollect_20041001_20250930.csv")
df_income = df_income[['日期', '净征收金额']]
df_income['日期'] = pd.to_datetime(df_income['日期'])
df_income = df_income.groupby('日期').sum().reset_index()
df_income = df_income.set_index('日期')

# 月度统计
df_debt_month = df_debt.resample('M').last().reset_index()  # 月末国债总额
df_income_month = df_income.resample('M').sum().reset_index()  # 月度净征收总额

# 合并数据
df_merged = pd.merge(df_debt_month, df_income_month, on="日期", how="inner")

# 计算年度利息（假设年利率3.0%，年度利息=年末国债总额*3%）
# 先将月度数据按年分组，取年末国债总额
df_debt_year = df_debt_month.copy()
df_debt_year['年份'] = df_debt_year['日期'].dt.year
df_debt_year = df_debt_year.groupby('年份').last().reset_index()
df_debt_year['年度利息'] = df_debt_year['国债总额'] * 0.04

# 年度净征收总额
df_income_year = df_income_month.copy()
df_income_year['年份'] = df_income_year['日期'].dt.year
df_income_year = df_income_year.groupby('年份')['净征收金额'].sum().reset_index()

# 合并年度数据
df_result = pd.merge(df_debt_year[['年份', '国债总额', '年度利息']], df_income_year, on='年份', how='inner')

# 输出结果
df_result.to_csv("data/temp/index_usa_debt_interest_vs_income.csv", index=False, encoding='utf-8-sig')

print("数据预览:")
print(df_result[['年份', '国债总额', '年度利息', '净征收金额']].head(10))
print(f"\n数据范围: {df_result['年份'].min()} 到 {df_result['年份'].max()}")
print(f"有效数据点数量: {len(df_result)}")

# 输出曲线图
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
plt.figure(figsize=(12, 8))
plt.plot(df_result["年份"], df_result["年度利息"], label='年度利息(美元, 3.0%)', linewidth=2, color='red')
plt.plot(df_result["年份"], df_result["净征收金额"], label='年度净征收金额(美元)', linewidth=2, color='blue')
plt.title("美国国债年度利息与政府年度收入对比", fontsize=16, fontweight='bold')
plt.xlabel("年份", fontsize=12)
plt.ylabel("金额 (美元)", fontsize=12)
plt.legend(fontsize=12)
plt.grid(True, alpha=0.3)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
